home *** CD-ROM | disk | FTP | other *** search
- //////////////////////////////////////////////////////////////////
- // fracsub1.cpp
- // This file is an extension of CIterationsview
- // Class Function implementations
- //
- //
-
- #include "stdafx.h"
- #include "itriazon.h"
- #include "itriadoc.h"
- #include "itriavw.h"
- #include "external.h"
- #include "math.h"
-
- void CIterationsView::TestPattern5()
- {
- // int j;
-
- py = Row;
-
- if (nMatrix)
- {
- for (px = 0; px < dim.cx ; px++)
- {
- if (!m_dib.SpatialOperator(px, py, NMAX))
- {
- AfxMessageBox("Error with Spatial Operator");
- bDraw = FALSE;
- bLaunch = FALSE;
- }
- }
- Row--;
- return;
- }
-
- for (px = 0; px < dim.cx ; px++)
- {
-
- TestPatternSub();
-
- }
-
- Row--;
- }
-
-
- void CIterationsView::TestPatternSub()
- {
- //char cstr[81];
-
- b_MAX = b_GT4 = FALSE;
- xsquared = ysquared = 0;
-
- if (bOrbits)
- {
- px = rb_center_x;
- py = rb_center_y;
- }
-
- x = xO + px * ldx, /* start julia on pixel */
- y = yO + py * ldy;
-
- if (jul == 0)
- {
- // Start mandelbrot set on 0,0
- cx = x;
- cy = y; // and use pixel for c.
- //cx = x, cy = y, x = 0L, y = 0L; // and use pixel for c.
- }
- else if (jul_save == 0) // If previous was a mandelbrot
- {
- cx = CRMID;
- cy = CIMID; // A Julia coordinate
- }
- if (bZeroInit && jul == 0)
- {
- x = 0;
- y = 0;
- }
-
- /////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////
-
- /* main iteration loop; go until the distance to the origin is
- * greater than 2 (i.e. square of the distance > 4), or we hit
- * the maximum number of iterations */
-
- xsquared = 0, ysquared = 0;
-
- // Chack minimum and maximum valid limits
- //if (cx == 0)
- // cx = zerotol;
- //if (cy == 0)
- // cy = zerotol;
-
- if (cx < zerotol && cx > -zerotol)
- {
- if (cx >= 0)
- cx = zerotol;
- else
- cx = -zerotol;
- }
-
- if (cy < zerotol && cy > -zerotol)
- {
- if (cy >= 0)
- cy = zerotol;
- else
- cy = -zerotol;
- }
-
- if (x < zerotol && x > -zerotol)
- {
- if (x >= 0)
- x = zerotol;
- else
- x = -zerotol;
- }
-
- if (y < zerotol && y > -zerotol)
- {
- if (y >= 0)
- y = zerotol;
- else
- y = -zerotol;
- }
-
- // Initialize some complex variables
- z = cmplx (x, y );
- z.set_biomorph(dBiomorph);
- c = cmplx(cx, cy);
-
- cNMAX = cmplx(0,0);
- z2 = cmplx(0,0);
-
- if (jul == 0)
- {
- c *= cOrient;
- if (bFilter_12) c=(c^dFilter_12Power).clog()/dFilter_12Magnif;
- if (Inverted) { c = 1/c; z=1/z; }
- if (Inverted_X) c.set_real(1/c.real());
- if (Inverted_Y) c.set_imag(1/c.imag());
- }
- else if (jul_save == 0)
- {
- c *= cOrient;
- z *= cOrient;
- if (bFilter_12)
- {
- c=(c^dFilter_12Power).clog()/dFilter_12Magnif;
- z=(z^dFilter_12Power).clog()/dFilter_12Magnif;
- }
- if (Inverted) { c = 1/c; z = 1/z; }
- if (Inverted_X) { c.set_real(1/c.real()); z.set_real(1/z.real()); }
- if (Inverted_Y) { c.set_imag(1/c.imag()); z.set_imag(1/z.imag()); }
- }
- else
- {
- z *= cOrient;
- //c *= cOrient; // ??????????????
- if (bFilter_12) z=(z^dFilter_12Power).clog()/dFilter_12Magnif;
- if (Inverted) z = 1/z;
- if (Inverted_X) z.set_real(1/z.real());
- if (Inverted_Y) z.set_imag(1/z.imag());
- }
-
- x = z.real();
- y = z.imaginary();
- cx = c.real();
- cy = c.imaginary();
-
- if (nPreFractal && bCombo)
- {
- PreCombo();
-
- switch (nPreFractal)
- {
- case 1:
- z=1/z.csin();
- break;
-
- case 2:
- z=1/z.ccos();
- break;
-
- case 3:
- z=1/z.clog();
- break;
-
- case 4:
- z=1/tangent(z);
- break;
-
- case 5:
- z=1/sinh(z);
- break;
-
- case 6:
- z=1/asin(z);
- break;
-
- case 7:
- z=1/acos(z);
- break;
-
- case 8:
- z=1/arctan(z);
- break;
-
- case 9:
- z=1/(z*z);
- break;
-
- case 10:
- z = z^.5;
- break;
-
- case 11:
- z = 1/(c + z);
- break;
-
- case 12:
- z = 1/(c * z);
- break;
-
- case 13:
- z = c/z;
- break;
-
- case 14:
- z = z / dBailout;
- break;
-
- case 15:
- z = (z+c) / dBailout;
- break;
-
- case 16:
- z = (z*c) / dBailout;
- break;
-
- default:
- break;
-
- }
-
- if (bComboCZ)
- c = z;
- //z = cmplx (x, y );
-
- // if (nDistortion >= 57 && nDistortion <= 69)
- // {
- // // Newton fractal type
- // c = z;
- // z = cmplx (x, y );
- // }
- }
-
- if (nDistortion >= 57 && nDistortion <= 69)
- {
- // Newton fractal type
- // c = z;
- z = cmplx (x, y );
- }
-
- TestEquations();
- }
-
-
- /////////////////////////
- void CIterationsView::TestEquations()
- {
- i = jrw = i3 = 0;
- rr = 0;
- dzx_save = dzy_save = 0;
- dzx_save_quick = dzy_save_quick = 0;
-
- limit = sqrt(cx*cx+cy*cy);
- dStrands_HI = limit + dStrands;
- dStrands_LO = limit - dStrands;
-
- //limit = sqrt(cx*cx+cy*cy);
- //limit = cx*cx+cy*cy;
-
- JMAX = NMAX-1;
-
- switch (nDistortion)
- {
- case 0: // Standard Fractal
-
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z = z*z+c;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 1:
- //z2 = cmplx(42,42);
- //while ((c-z2).abs() > 1E-4 && i++ < NMAX-3)
- //{
- // z2 = c;
- // //c = c - ((c^3)-1)/(3*(c^2));
- // c =
- // if (nFilter) Delta_z(c.real(), c.imaginary());
- //}
- //if (nFilter) Filter_Complete();
-
- if (jul == 0)
- z = cmplx(0,0);
-
- //c = z;
- //z = cmplx (x, y );
-
- if (jul == 1 && !bCombo)
- {
- c = cmplx(cx, cy);
- }
-
- //z +=1;
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z = z-((z*z*z)+(c-1)*z-c)/(3*(z*z)+c-1);
-
- //z = z - (z*z*z-1) / (3*z*z) + c;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
-
-
- break;
-
- case 2: //
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z = (z*z+c)/c + c;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 3: // Empty
- for (i = 0; i <= JMAX && z.squares() < dBailout ; i++)
- {
- z = 1/(z*z + 1/c) * z*z + c;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 4: //
- for (i = 0; i <= JMAX && z.squares() < dBailout ; i++)
- {
- z = z.ccos()*c;
- if (nFilter) Delta_z(z.real(), z.imag());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 5: // Distortion (Double Bomber)
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z = ((z*z+c)/c).ccos() + c;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 6: // Testing
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z = z*z+c*(1+z.squares());
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 7:
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z = ((z*z)/(1+z))+c;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 8:
- /////////////////////////////////////////////////////////
- // Roger T. Stevens Methods
- // Legendre Polynomial Fractal
-
- //Pattern5_Case08();
- //z.set_real(x);
- //z.set_imag(y);
- //8.) F(z) = ((5z^3 - 3z) / 2) + c; [Legendre Polynomial]
-
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z = ((5*(z^3) - 3*z) / 2) + c;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
-
- if (nFilter) Filter_Complete();
- break;
-
- case 9:
- /////////////////////////////////////////////////////////
- // Fractal 9
- if (jul == 0)
- z = cmplx(0,0);
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z = z*z+c*(i/(int)rn);
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 10:
- /////////////////////////////////////////////////////////
- // Roger T. Stevens Methods
- // 3rd Order Newton
- Pattern5_Case10();
- z.set_real(x);
- z.set_imag(y);
-
- break;
-
- case 11:
- /////////////////////////////////////////////////////////
- // Roger T. Stevens Methods
- // 7nth Order Newton
- Pattern5_Case11();
- z.set_real(x);
- z.set_imag(y);
-
- break;
-
- case 12:
- // Generalized Mandelbrot
- cn = cmplx (rorder_r, rorder_i);
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z = (z^cn)+c;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
-
- if (nFilter) Filter_Complete();
- break;
-
- case 13:
- t=(c*c*c).csin();
- t2=(c*c).ccos();
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- //z=(z*z).ccos()-(z*z*z).csin()-(z*z).ccos()+c;
- z=(z*z).ccos()-t-t2+c;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 14:
- t=(c*c).ccos();
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z=(z*z).csin()-.2*z*z+c+t;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 15:
- // Roger T. Stevens method for the Tchebychev C5 fractal
- // Pattern5_Case15();
- // z.set_real(x);
- // z.set_imag(y);
-
- //15.) F(z) = c(z^5 - 5z^3 + 5z); [Tchebychev C5]
-
- // z = c(z^5 - 5z^3 + 5z); [Tchebychev C5]
-
- if (jul == 0)
- z = c;
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z = c*(z^5) - c*5*(z^3) + c*5*z;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 17:
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- //z = ((z*z).csin() + c + c/dBailout);
- //z = ((z^7) + 1)^(1/3) + c;
- //z = c*z.ccos();
- z = z*z*sin(z.real()) + c*z*cos(z.imag()) + c;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
-
- if (nFilter) Filter_Complete();
- break;
-
- case 18:
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- //z = ((z*z).cexp())/(z + c);
- z = ((z*z + c)^2) + z + c;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
-
- if (nFilter) Filter_Complete();
- break;
-
- case 19:
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z = ((z.ccos()*c).ccos()+c).ccos()*c;
- if (nFilter) Delta_z(z.real(), z.imaginary());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 20:
- // Variation Real
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z = z*z+c;
- if (nFilter) Delta_z(z.real(), z.imag());
- z.set_real(z.real()*z.real());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 21:
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z=z*z+c;
- }
- z=1/z.ccos();
- for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
- {
- z=z*z+c;
- if (nFilter) Delta_z(z.real(), z.imag());
- }
- if (nFilter) Filter_Complete();
- break;
-
- case 16:
- case 22: // Real World Fractal Equations
- case 23:
- case 24:
- case 25:
- case 26:
- case 27:
- case 28:
- case 29:
- case 30:
- case 31:
- case 32:
- case 33:
- case 34:
- case 35:
- case 36:
- case 37:
- case 38:
- case 39:
- case 40:
- case 41:
- case 42:
- case 43:
- case 44:
- case 45:
- case 46:
- case 47:
- case 48:
- case 49:
- case 50:
- case 51:
- case 52:
- case 53:
- case 54:
- case 55:
- case 56:
- case 57:
- case 58:
- case 59:
- case 60:
- case 61:
- case 62:
- case 63:
- case 64:
- case 65:
- case 66:
- case 67:
- case 68:
- case 69:
- case 70:
- case 71:
- case 72:
- case 73:
- case 74:
- case 75:
- case 76:
- case 77:
- case 78:
- case 79:
- case 80:
- case 81:
- case 82:
- case 83:
- case 84:
- case 85:
- case 90:
- case 91:
- case 92:
- case 93:
- case 94:
- case 95:
- case 96:
- case 97:
- case 98:
- case 99:
- case 100:
-
- RealWorld();
-
- break;
-
- case 101:
- case 102:
- case 103:
- case 104:
- case 105:
- case 106:
- case 107:
- case 108:
- case 109:
- case 110:
- case 111:
- case 112:
- case 113:
- case 114:
- case 115:
- case 116:
- case 117:
- case 118:
- case 119:
- case 120:
- case 121:
- case 122:
- case 123:
- case 124:
- case 125:
- case 126:
- case 127:
- case 128:
- case 129:
- case 130:
- case 131:
- case 132:
- case 133:
- case 134:
- case 135:
- case 136:
- case 137:
- case 138:
- case 139:
- case 140:
- case 141:
- case 142:
- case 143:
- case 144:
- case 145:
- case 146:
- case 147:
- case 148:
- case 149:
- case 150:
- case 151:
- case 152:
- case 153:
- case 154:
- case 155:
- case 156:
- case 157:
- case 158:
- case 159:
- case 160:
- case 161:
- case 162:
- case 163:
- case 164:
- case 165:
- case 166:
- case 167:
-
- Genesis();
-
- break;
-
- default:
- AfxMessageBox("This equation number does not exist");
- Row = RowMax;
- Col = ColMax;
- px = dim.cx;
- py = dim.cy;
- bAbort = TRUE;
- bPostFractal = FALSE;
-
- break;
-
- }
-
- if (!b_MAX)
- {
- if (i >= JMAX)
- b_MAX = TRUE;
- }
-
- // Get the maximum iteration
- if (i > temp_max)
- temp_max = i;
-
- //x = z.real();
- //y = z.imag();
-
- xsquared = z.real() * z.real();
- ysquared = z.imaginary() * z.imaginary();
-
- if (b_MAX && (nIGOption || nGradientTest)) // Enhance the inside bay (Inside Gradients)
- {
- //if (!xsquared + ysquared < zerotol && // 4
- // xsquared + ysquared > -zerotol) // Check for a valid range
- if (xsquared < zerotol && xsquared > -zerotol)
- xsquared = zerotol;
- if (ysquared < zerotol && ysquared > -zerotol)
- ysquared = zerotol;
-
- {
- switch (nIGOption)
- {
- case 0:
-
- xsquared *=100;
- ysquared *=100;
-
- break;
-
- case 1:
-
- if (xsquared != 0)
- xsquared = (CRMAX - CRMIN ) * (fabsl(sinl(xsquared)*10));
- if (ysquared != 0)
- ysquared = (CIMAX - CIMIN ) * (fabsl(cosl(ysquared)*10));
-
- break;
-
- case 2:
- if (xsquared != 0)
- xsquared = (1 / (CRMAX - CRMIN )) * 10 * xsquared ;
- if (ysquared != 0)
- ysquared = (1 / (CIMAX - CIMIN )) * 10 * ysquared ;
- break;
-
- case 3:
- if (xsquared != 0)
- xsquared = (( 1.0) - (-2.0) ) * (sinl(xsquared)*10);
- if (ysquared != 0)
- ysquared = (( 1.2) - (-1.2) ) * (log10l(ysquared)*10);
- break;
-
- case 4:
- if (xsquared != 0)
- xsquared = (( 1.0) - (-2.0) ) * 10 * fabsl(sinl(xsquared)) ;
- if (ysquared != 0)
- ysquared = (( 1.2) - (-1.2) ) * 10 * fabsl(sinl(ysquared)) ;
- break;
-
-
- default:
- AfxMessageBox("Shouldn't get here IGOptions");
- break;
- }
-
- switch (nGradientTest)
- {
- case 0:
- // standard fractal
- break; // do nothing
-
- case 1:
- // bay addition
- da = (xsquared+ysquared)*nBay100; //
- i = (int) da + i;
- i %= NMAX;
-
- break;
-
- case 2:
- // b_bay_multiply)
- dm = xsquared*ysquared*nBay1000; // 1000
- i = (int) dm + i;
- i %= NMAX;
-
- break;
-
- case 3:
- // bay addition
- dm = xsquared*ysquared*nBay1000; // 1000
- da = (xsquared+ysquared)*nBay100; // 100
- i = (int) (dm+da) + i;
- i %= NMAX;
-
- break;
-
- case 4:
- // bay multiplication
- dm = xsquared*ysquared*nBay1000;
- da = (xsquared+ysquared)*nBay100;
- i = (int) (dm*da) + i;
- i %= NMAX;
-
- break;
-
- case 5:
- // bay subtraction
- dm = xsquared*ysquared*nBay1000;
- da = (xsquared+ysquared)*nBay100;
- i = (int) ((da-dm) + (double)i);
- i %= NMAX;
-
- break;
-
- case 6:
- // bay division
- dm = xsquared*ysquared*nBay1000;
- da = (xsquared+ysquared)*nBay100;
- if (dm < zerotol)
- dm = zerotol;
- i = (int) (da/dm) + i;
- i %= NMAX;
-
- break;
-
- case 7:
- dm = xsquared*ysquared;
- da = (xsquared+ysquared);
- i = (int) (sqrtl(dm*dm*da*da)*nBay100) + i;
- i %= NMAX;
- break;
-
- case 8:
- dm = xsquared*ysquared;
- da = (xsquared+ysquared);
- i = (int) (sqrtl(dm*da)*nBay100) + i;
- i %= NMAX;
- break;
-
- case 9:
- dm = xsquared*ysquared*nBay100;
- da = (xsquared+ysquared*nBay100);
- i = (int) fabsl(10*sinl(dm)*nBay1000+10*cosl(da)*nBay1000) + i;
- i %= NMAX;
- break;
-
- case 10:
- dm = xsquared*ysquared*nBay100;
- da = (xsquared+ysquared*nBay100);
- i = (int) fabsl((10*sinl(dm)*sinl(da))) + i;
- i %= NMAX;
- break;
-
- case 11:
- dm = xsquared*ysquared*nBay100; // 500
- da = (xsquared+ysquared)*nBay100;
- i = (int) fabsl((10*sinl(dm)*logl(da))) + i;
- i %= NMAX;
- break;
-
- case 12:
- dm = xsquared*ysquared;
- da = (xsquared+ysquared)*nBay100;
- i = (int) (sqrtl(dm*da*da) * nBay1000) + i;
- i %= NMAX;
- break;
-
- case 13:
- da = (xsquared+ysquared)*nBay100;
- i = (int) (da*da) + i;
- i %= NMAX;
- break;
-
- case 14:
- dm = xsquared*ysquared*nBay1000;
- da = (xsquared+ysquared)*nBay100;
- if (dm > zerotol)
- i = (int) ((da*da)/(dm)) + i;
- i %= NMAX;
- break;
-
- case 15:
- dm = xsquared*ysquared;
- da = (xsquared+ysquared)*nBay100;
- i = (int) (10*sinl(dm*da)* nBay1000) + i;
- i %= NMAX;
- break;
-
- case 16:
- da = (10*fabsl(sinl(xsquared))*fabsl(sinl(ysquared)))*nBay100;
- i = (int) (da*da) + i;
- i %= NMAX;
- break;
-
- case 17:
- da = (xsquared+ysquared);
- i = (int) (da*da*nBay100*2) + i;
- i %= NMAX;
- break;
-
- case 18:
- da = (xsquared+ysquared);
- i = (int) (da * da * nBay100 * .3) + i;
- i %= NMAX;
- break;
-
- case 19:
- da = (xsquared+ysquared);
- i = (int) (da * da * nBay100 * .05) + i;
- i %= NMAX;
- break;
-
- default:
- AfxMessageBox("fracsub, shouldn't get here");
- bDraw = FALSE;
- bLaunch = FALSE;
- break;
- }
- }
- b_MAX = FALSE;
- }
-
- // Apply the Outside Bay Gradients
- //if (xsquared + ysquared < zerotol &&
- // xsquared + ysquared > -zerotol) // Check for a valid range
- {
- switch(nOutsideTest)
- {
- case 0: // Standard fractal, do nothing
- break;
-
- case 1:
- i = (i + ((int) ((xsquared + ysquared) * nBay1000))) % NMAX;
- break;
-
- case 2:
- i = (i + ((int) (((xsquared+1) / (ysquared+1)) * nBay1000))) % NMAX;
- break;
-
- case 3:
- i = (i + (int) (xsquared * ysquared * nBay1000)) % NMAX;
- break;
-
- case 4:
- i = (i + ((int) (fabsl(xsquared - ysquared) * nBay1000))) % NMAX;
- break;
-
- case 5:
- i = (i + ((int) (sqrtl(xsquared * ysquared) * nBay1000))) % NMAX;
- break;
-
- case 6:
- i = (i + ((int) ((x + y) * nBay1000))) % NMAX;
- break;
-
- case 7:
- i = (i + ((int) (ysquared * nBay1000))) % NMAX;
- break;
-
- case 8:
- i = (i + ((int) (x * y * nBay1000))) % NMAX;
- break;
-
- case 9:
- i = (i + ((int) ((nBay100*sinl(xsquared)+nBay100*sinl(ysquared)) * nBay1000))) % NMAX;
- break;
-
- case 10:
- i = (i + ((int) ((1 + sinl(xsquared) * sinl(ysquared) * nBay1000)))) % NMAX;
- break;
-
- case 11:
- i = (i + ((int) ((2*log10l(xsquared) + sinl(ysquared)) * nBay1000))) % NMAX;
- break;
-
- case 12:
- i = (i + ((int) ((sinl(xsquared) / (sinl(ysquared)+zerotol) * nBay1000)))) % NMAX;
- break;
-
- case 13:
- i = (i + ((int) ((1+sinl(xsquared*ysquared) / (sinl(xsquared+ysquared)+zerotol) * nBay1000)))) % NMAX;
- break;
-
- case 14:
- i = (i + ((int) (1+nBay1000*sinl(xsquared)+1+nBay1000*sinl(ysquared)))) % NMAX;
- break;
-
- default:
- AfxMessageBox("Shouldn't get here, fracsub1");
- break;
-
- }
- }
-
- if (b_MAX && b_MAX_Zero)
- i = 0;
-
- i = abs(i);
- i %= NMAX;
- if (i == 0) i = 1;
-
- i = i / nLevel;
- i = i * nLevel;
-
- if (bPostProcess) PostProcess();
-
- if (bPostFractal)
- return;
-
- if (i < 0 || i > NMAX)
- {
- char cstr[81];
- wsprintf(cstr, "i=%d: Error", i);
- GetParent()->SetWindowText(cstr);
- i = 0;
- }
-
- // Ok, Here is where we set the Pixel
- // CIterationsDoc* pDoc = GetDocument();
-
- if (!m_dib.SetPixel(px, py, i))
- {
- AfxMessageBox("Error writing to DIB");
- Row = RowMax;
- Col = ColMax;
- px = dim.cx;
- py = dim.cy;
- bAbort = TRUE;
- bPostFractal = FALSE;
- }
-
- if (bOrbits)
- {
- Col = px = dim.cx;
- Row = 0;
- }
-
- }
-
- void CIterationsView::OnOptionsMaxzero()
- {
- b_MAX_Zero ^= 1;
- GoDoFractal();
- }
-
- void CIterationsView::OnUpdateOptionsMaxzero(CCmdUI* pCmdUI)
- {
- pCmdUI->SetCheck(b_MAX_Zero);
- }
-
- void CIterationsView::OnFractal0prefractal()
- {
- nPreFractal = 0;
- bCombo = FALSE;
- GoDoFractal();
- }
-
- void CIterationsView::OnUpdateFractal0prefractal(CCmdUI* pCmdUI)
- {
- if (nPreFractal == 0)
- pCmdUI->SetCheck(TRUE);
- else
- pCmdUI->SetCheck(FALSE);
- }
-
- void CIterationsView::OnFractal1prefractal()
- {
- nPreFractal = 1;
- if (!bCombo)
- OnOptionsCombo();
- GoDoFractal();
- }
-
- void CIterationsView::OnUpdateFractal1prefractal(CCmdUI* pCmdUI)
- {
- if (nPreFractal == 1)
- pCmdUI->SetCheck(TRUE);
- else
- pCmdUI->SetCheck(FALSE);
- }
-
- void CIterationsView::OnFractal2prefractal()
- {
- nPreFractal = 2;
- if (!bCombo)
- OnOptionsCombo();
- GoDoFractal();
- }
-
- void CIterationsView::OnUpdateFractal2prefractal(CCmdUI* pCmdUI)
- {
- if (nPreFractal == 2)
- pCmdUI->SetCheck(TRUE);
- else
- pCmdUI->SetCheck(FALSE);
- }
-
- void CIterationsView::OnFractal3prefractal()
- {
- nPreFractal = 3;
- if (!bCombo)
- OnOptionsCombo();
- GoDoFractal();
- }
-
- void CIterationsView::OnUpdateFractal3prefractal(CCmdUI* pCmdUI)
- {
- if (nPreFractal == 3)
- pCmdUI->SetCheck(TRUE);
- else
- pCmdUI->SetCheck(FALSE);
- }
-
- void CIterationsView::OnFractal4prefractal()
- {
- nPreFractal = 4;
- if (!bCombo)
- OnOptionsCombo();
- GoDoFractal();
- }
-
- void CIterationsView::OnUpdateFractal4prefractal(CCmdUI* pCmdUI)
- {
- if (nPreFractal == 4)
- pCmdUI->SetCheck(TRUE);
- else
- pCmdUI->SetCheck(FALSE);
- }
-
- void CIterationsView::OnFractal5prefractal()
- {
- nPreFractal = 5;
- if (!bCombo)
- OnOptionsCombo();
- GoDoFractal();
- }
-
- void CIterationsView::OnUpdateFractal5prefractal(CCmdUI* pCmdUI)
- {
- if (nPreFractal == 5)
- pCmdUI->SetCheck(TRUE);
- else
- pCmdUI->SetCheck(FALSE);
- }
-
- void CIterationsView::OnFractal6prefractal()
- {
- nPreFractal = 6;
- if (!bCombo)
- OnOptionsCombo();
- GoDoFractal();
- }
-
- void CIterationsView::OnUpdateFractal6prefractal(CCmdUI* pCmdUI)
- {
- if (nPreFractal == 6)
- pCmdUI->SetCheck(TRUE);
- else
- pCmdUI->SetCheck(FALSE);
- }
-
- void CIterationsView::OnFractal7prefractal()
- {
- nPreFractal = 7;
- if (!bCombo)
- OnOptionsCombo();
- GoDoFractal();
- }
-
- void CIterationsView::OnUpdateFractal7prefractal(CCmdUI* pCmdUI)
- {
- if (nPreFractal == 7)
- pCmdUI->SetCheck(TRUE);
- else
- pCmdUI->SetCheck(FALSE);
- }
-
- void CIterationsView::OnFractal8prefractal()
- {
- nPreFractal = 8;
- if (!bCombo)
- OnOptionsCombo();
- GoDoFractal();
- }
-
- void CIterationsView::OnUpdateFractal8prefractal(CCmdUI* pCmdUI)
- {
- if (nPreFractal == 8)
- pCmdUI->SetCheck(TRUE);
- else
- pCmdUI->SetCheck(FALSE);
- }
-
- void CIterationsView::OnFractal9prefractal()
- {
- nPreFractal = 9;
- if (!bCombo)
- OnOptionsCombo();
- GoDoFractal();
- }
-
- void CIterationsView::OnUpdateFractal9prefractal(CCmdUI* pCmdUI)
- {
- if (nPreFractal == 9)
- pCmdUI->SetCheck(TRUE);
- else
- pCmdUI->SetCheck(FALSE);
- }
-
- void CIterationsView::OnFractal10prefractal()
- {
- nPreFractal = 10;
- if (!bCombo)
- OnOptionsCombo();
- GoDoFractal();
- }
-
- void CIterationsView::OnUpdateFractal10prefractal(CCmdUI* pCmdUI)
- {
- if (nPreFractal == 10)
- pCmdUI->SetCheck(TRUE);
- else
- pCmdUI->SetCheck(FALSE);
- }
-
- void CIterationsView::OnFractal11prefractal()
- {
- nPreFractal = 11;
- if (!bCombo)
- OnOptionsCombo();
- GoDoFractal();
- }
-
- void CIterationsView::OnUpdateFractal11prefractal(CCmdUI* pCmdUI)
- {
- if (nPreFractal == 11)
- pCmdUI->SetCheck(TRUE);
- else
- pCmdUI->SetCheck(FALSE);
- }
-
-
- void CIterationsView::OnFractal12prefractal()
- {
- nPreFractal = 12;
- if (!bCombo)
- OnOptionsCombo();
- GoDoFractal();
- }
-
- void CIterationsView::OnUpdateFractal12prefractal(CCmdUI* pCmdUI)
- {
- if (nPreFractal == 12)
- pCmdUI->SetCheck(TRUE);
- else
- pCmdUI->SetCheck(FALSE);
- }
-
- void CIterationsView::OnFractal13prefractal()
- {
- nPreFractal = 13;
- if (!bCombo)
- OnOptionsCombo();
- GoDoFractal();
- }
-
- void CIterationsView::OnUpdateFractal13prefractal(CCmdUI* pCmdUI)
- {
- if (nPreFractal == 13)
- pCmdUI->SetCheck(TRUE);
- else
- pCmdUI->SetCheck(FALSE);
- }
-
- void CIterationsView::OnFractal14prefractal()
- {
- nPreFractal = 14;
- if (!bCombo)
- OnOptionsCombo();
- GoDoFractal();
- }
-
- void CIterationsView::OnUpdateFractal14prefractal(CCmdUI* pCmdUI)
- {
- if (nPreFractal == 14)
- pCmdUI->SetCheck(TRUE);
- else
- pCmdUI->SetCheck(FALSE);
- }
-
- void CIterationsView::OnFractal15prefractal()
- {
- nPreFractal = 15;
- if (!bCombo)
- OnOptionsCombo();
- GoDoFractal();
- }
-
- void CIterationsView::OnUpdateFractal15prefractal(CCmdUI* pCmdUI)
- {
- if (nPreFractal == 15)
- pCmdUI->SetCheck(TRUE);
- else
- pCmdUI->SetCheck(FALSE);
- }
-
- void CIterationsView::OnFractal16prefractal()
- {
- nPreFractal = 16;
- if (!bCombo)
- OnOptionsCombo();
- GoDoFractal();
- }
-
- void CIterationsView::OnUpdateFractal16prefractal(CCmdUI* pCmdUI)
- {
- if (nPreFractal == 16)
- pCmdUI->SetCheck(TRUE);
- else
- pCmdUI->SetCheck(FALSE);
- }
-
-